home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 11 / Cream of the Crop 11-2.iso / os2 / fm2utl.zip / srch.cmd < prev    next >
OS/2 REXX Batch file  |  1995-03-06  |  3KB  |  138 lines

  1. /*
  2.  * A search command for OS/2
  3.  * Finds all files matching mask containing string
  4.  * Freeware by M. Kimes
  5.  */
  6.  
  7. '@echo off'
  8. parse arg cl
  9. recurse = 'F'
  10. options = 'CN'
  11. counter = 0
  12. found = 0
  13. insensitive = 0
  14. nolines = 0
  15. prepend = ''
  16. if cl = '/?' then signal givehelp
  17. if cl = '-?' then signal givehelp
  18. Again:
  19. parse upper var cl dummy mask
  20. if dummy = '/S' then
  21. do
  22.   recurse = 'FS'
  23.   parse var cl dummy cl
  24.   signal Again
  25. end
  26. parse upper var cl dummy mask
  27. if dummy = '/I' then
  28. do
  29.   if nolines = 0 then options = 'N' else options = ''
  30.   insensitive = 1
  31.   parse var cl dummy cl
  32.   signal Again
  33. end
  34. parse upper var cl dummy mask
  35. if dummy = '/N' then
  36. do
  37.   if insensitive = 0 then options = 'C' else options = ''
  38.   nolines = 1
  39.   parse var cl dummy cl
  40.   signal Again
  41. end
  42. parse upper var cl dummy mask
  43. if dummy = '/M' then
  44. do
  45.   more = ''
  46.   parse var cl dummy cl
  47.   signal Again
  48. end
  49. parse var cl mask text
  50. if text = '' then signal givehelp
  51. if mask = '' then mask = '*'
  52. if nolines = 0 then prepend = ' **'
  53. call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  54. call SysLoadFuncs
  55. dummy = charout(,'Working...')
  56. rc = SysFileTree(mask,filename,recurse)
  57. dummy = charout(,'0d'x)
  58. if rc = 0 then
  59. do
  60.   if filename.0 \= 0 then
  61.   do
  62.     do i = 1 to filename.0
  63.       parse var filename.i fdate ftime fsize fattr fname
  64.       fname = strip(fname,'b')
  65.       if fname \= '' then
  66.       do
  67.         rc = SysFileSearch(text,fname,foundstr,option)
  68.         if rc = 0 then
  69.         do
  70.           if foundstr.0 \= 0 then
  71.           do
  72.             found = found + 1
  73.             say prepend''fname
  74.             if more \= '' then
  75.             do
  76.               counter = counter + 1
  77.               if counter = 24 then
  78.               do
  79.                 if i \= filename.0 then
  80.                 do
  81.                   dummy = charout(,'[More]')
  82.                   dummy = SysGetKey('NOECHO')
  83.                   dummy = charout(,'0d'x)
  84.                   counter = 0
  85.                 end
  86.               end
  87.             end
  88.             if nolines = 0 then
  89.             do
  90.               do j = 1 to foundstr.0
  91.                 say '>> 'strip(left(foundstr.j,76),b)
  92.                 if more \= '' then
  93.                 do
  94.                   counter = counter + 1
  95.                   if counter = 24 then
  96.                   do
  97.                     if i \= filename.0 then
  98.                     do
  99.                       dummy = charout(,'[More]')
  100.                       dummy = SysGetKey('NOECHO')
  101.                       dummy = charout(,'0d'x)
  102.                       counter = 0
  103.                     end
  104.                   end
  105.                 end
  106.               end
  107.             end
  108.           end
  109.         end
  110.       end
  111.     end
  112.   end
  113.   else
  114.   do
  115.     say 'No matching files found.'
  116.     found = 1
  117.   end
  118. end
  119. if found = 0 then say 'No matching files found.'
  120. exit
  121.  
  122. givehelp:
  123. say 'SRCH.CMD'
  124. say ' Searches for strings in files.'
  125. say ''
  126. say ' Usage:  Srch [/I] [/M] [/N] [/S] mask text to find'
  127. say ''
  128. say '  /I = case insensitive search'
  129. say '  /M = no [More] prompting'
  130. say '  /N = no lines (normally lines containing text are displayed)'
  131. say '  /S = recurse into subdirectories'
  132. say ''
  133. say ' Examples:  Srch /N *.c HindMost('
  134. say '            Srch /S /I *.txt Then the geek bit off his head.'
  135. say ''
  136. say 'Hector wuz here.'
  137. exit
  138.